<!doctype html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Link</title>

    <!-- Plain link tag -->
    <link href="/styles/site.css" rel="stylesheet" title="&lt;the title>" />

    <!-- Globbed link tag with existing file -->
    <link rel="stylesheet" title="&lt;the title>" href="/styles/site.css" />

    <!-- Globbed link tag with comma separated pattern -->
    <link rel="stylesheet" title="&lt;the title" href="/styles/site.css" /><link rel="stylesheet" title="&lt;the title" href="/styles/siteIntegrity.css" /><link rel="stylesheet" title="&lt;the title" href="/styles/sub/site2.css" /><link rel="stylesheet" title="&lt;the title" href="/styles/sub/site3.css" /><link rel="stylesheet" title="&lt;the title" href="/styles/sub/site3.min.css" />

    <!-- Globbed link tag with existing file and exclude -->
    <link rel="stylesheet" title='"the" title' href="/styles/site.css" /><link rel="stylesheet" title='"the" title' href="/styles/siteIntegrity.css" /><link rel="stylesheet" title='"the" title' href="/styles/sub/site2.css" />

    <!-- Globbed link tag missing include -->
    <link rel="stylesheet">

    <!-- Globbed link tag missing include but with static href -->
    <link href="/styles/site.css" rel="stylesheet" />

    <!-- Globbed link tag with missing file -->
    

    <!-- Globbed link tag with file outside of webroot -->
    

    <!-- Globbed link tag with file outside of webroot -->
    

    <!-- Globbed link tag with existing file and static href -->
    <link href="/styles/site.css" rel="stylesheet" /><link href="/styles/sub/site2.css" rel="stylesheet" />

    <!-- Globbed link tag with existing file and static href should dedupe -->
    <link href="/styles/site.css" rel="stylesheet" />

    <!-- Fallback to static href -->
    <link href="/styles/site.min.css?a=b&amp;c=d" rel="stylesheet" data-extra="test" title='"the" title' />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css?a=b\u0026amp;c=d"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 title=\u0027\u0022the\u0022 title\u0027 ");</script>

    <!-- Fallback to static href with no asp-suppress-fallback-integrity attribute, default behavior is to keep integrity hash -->
    <link href="/styles/site.min.css?a=b&amp;c=d" rel="stylesheet" data-extra="test" title='"the" title' integrity="XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh+pQc=" crossorigin="anonymous" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css?a=b\u0026amp;c=d"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 title=\u0027\u0022the\u0022 title\u0027 integrity=\u0022XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh\u002BpQc=\u0022 crossorigin=\u0022anonymous\u0022 ");</script>

    <!-- Fallback to static href with asp-suppress-fallback-integrity set to false, behavior is to keep integrity hash -->
    <link href="/styles/site.min.css?a=b&amp;c=d" rel="stylesheet" data-extra="test" title='"the" title' integrity="XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh+pQc=" crossorigin="anonymous" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css?a=b\u0026amp;c=d"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 title=\u0027\u0022the\u0022 title\u0027 integrity=\u0022XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh\u002BpQc=\u0022 crossorigin=\u0022anonymous\u0022 ");</script>

    <!-- Fallback to static href with asp-suppress-fallback-integrity provided, removes integrity attribute on fallback so that different CSS can be loaded  -->
    <link href="/styles/site.min.css?a=b&amp;c=d" rel="stylesheet" data-extra="test" title='"the" title' integrity="XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh+pQc=" crossorigin="anonymous" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/siteIntegrity.css?a=b\u0026amp;c=d"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 title=\u0027\u0022the\u0022 title\u0027 crossorigin=\u0022anonymous\u0022 ");</script>

    <!-- Fallback to static href with dynamic attributes -->
    <link href="/styles/site.min.css?a=b&amp;c=d" rel="stylesheet" data-extra="test" title='&quot;the&quot; title' />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css?a=b\u0026amp;c=d"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 title=\u0027\u0026quot;the\u0026quot; title\u0027 ");</script>

    <!-- Fallback to static href with custom rel -->
    <link href="/styles/site.min.css?a=b&amp;c=d" rel="x-stylesheet" />

    <!-- Fallback from globbed href to static href -->
    
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>

    <!-- Fallback from globbed href with exclude to static href -->
    
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>

    <!-- Fallback from globbed and static href to static href -->
    <link href="styles/site.min.css" rel="stylesheet" data-extra="test" /><link href="/styles/site.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>

    <!-- Fallback from globbed and static href with exclude to static href -->
    <link href="styles/site.min.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>

    <!-- Fallback to static href with no primary href -->
    <link rel="stylesheet" data-extra="test">
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>

    <!-- Fallback to globbed href -->
    <link href="/styles/site.min.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>

    <!-- Fallback to static and globbed href -->
    <link href="/styles/site.min.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css","/styles/sub/site2.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>

    <!-- Fallback to static and globbed href should dedupe -->
    <link href="/styles/site.min.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>

    <!-- Fallback to static and globbed href with exclude -->
    <link href="/styles/site.min.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css","/styles/siteIntegrity.css","/styles/sub/site2.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>

    <!-- Fallback from globbed href to globbed href -->
    
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>

    <!-- Fallback from globbed href with exclude to globbed href -->
    
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>

    <!-- Fallback from globbed and static href to globbed href -->
    <link href="styles/site.min.css" rel="stylesheet" data-extra="test" /><link href="/styles/site.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>

    <!-- Fallback from globbed and static href with exclude to globbed href -->
    <link href="styles/site.min.css" rel="stylesheet" data-extra="test">
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>

    <!-- Kitchen sink, all the attributes -->
    <link href="styles/site.min.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css","/styles/siteIntegrity.css","/styles/sub/site2.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>

    <!-- Fallback to globbed href that doesn't exist -->
    <link href="/styles/site.min.css" rel="stylesheet" data-extra="test" />

    <!-- Fallback to globbed href outside webroot -->
    <link href="/styles/site.min.css" rel="stylesheet" data-extra="test" />

    <!-- Fallback with missing attribute -->
    <link href="/styles/site.min.css" rel="stylesheet" data-extra="test" />

    <!-- Fallback with missing attribute -->
    <link href="/styles/site.min.css" rel="stylesheet" data-extra="test" />

    <!-- Fallback with missing attribute -->
    <link href="/styles/site.min.css" rel="stylesheet" data-extra="test" />

    <!-- Plain link tag with file version -->
    <link href="/styles/site.css?v=XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh-pQc" rel="stylesheet" />

    <!-- Globbed link tag with existing file and file version -->
    <link rel="stylesheet" href="/styles/site.css?v=XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh-pQc" />

    <!-- Fallback with file version -->
    <link href="/styles/site.min.css" rel="stylesheet" data-extra="test">
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css?v=XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh-pQc"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>

    <!-- Globbed link tag with existing file, static href and file version -->
    <link href="/styles/site.css?v=XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh-pQc" rel="stylesheet" /><link href="/styles/siteIntegrity.css?v=2PJDxTb5ea6QWpW5p3vvrvP3bat7l18amFI0M8-xBls" rel="stylesheet" /><link href="/styles/sub/site2.css?v=30cxPex0tA9xEatW7f1Qhnn8tVLAHgE6xwIZhESq0y0" rel="stylesheet" /><link href="/styles/sub/site3.css?v=fSxxOr1Q4Dq2uPuzlju5UYGuK0SKABI-ghvaIGEsZDc" rel="stylesheet" /><link href="/styles/sub/site3.min.css?v=s8JMmAZxBn0dzuhRtQ0wgOvNBK4XRJRWEC2wfzsVF9M" rel="stylesheet" />
</head>
<body>

    <h2>Link Tag Helper Test</h2>

</body>
</html>